package com.huifenqi.sidecar.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.net.URI;
import java.util.Objects;

@ConfigurationProperties("sidecar")
public class SidecarProperties {

    private URI healthUri;

    private URI homePageUri;

    @Max(65535)
    @Min(1)
    private int port;

    private String hostname;

    private String ipAddress;

    public URI getHealthUri() {
        return healthUri;
    }

    public void setHealthUri(URI healthUri) {
        this.healthUri = healthUri;
    }

    public URI getHomePageUri() {
        return homePageUri;
    }

    public void setHomePageUri(URI homePageUri) {
        this.homePageUri = homePageUri;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getHostname() {
        return hostname;
    }

    public void setHostname(String hostname) {
        this.hostname = hostname;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SidecarProperties that = (SidecarProperties) o;
        return Objects.equals(healthUri, that.healthUri) &&
                Objects.equals(homePageUri, that.homePageUri) &&
                port == that.port &&
                Objects.equals(hostname, that.hostname) &&
                Objects.equals(ipAddress, that.ipAddress);
    }

    @Override
    public int hashCode() {
        return Objects.hash(healthUri, homePageUri, port, hostname, ipAddress);
    }

    @Override
    public String toString() {
        return new StringBuilder("SidecarProperties{")
                .append("healthUri=").append(healthUri).append(", ")
                .append("homePageUri=").append(homePageUri).append(", ")
                .append("port=").append(port).append(", ")
                .append("hostname='").append(hostname).append("', ")
                .append("ipAddress='").append(ipAddress).append("'}")
                .toString();
    }

}